Dự án Scratch — Lớp 8

Câu chuyện tương tác nhiều nhánh

Hướng dẫn xây dựng truyện "chọn đường đi của riêng bạn" — người xem quyết định cốt truyện qua từng lựa chọn, dẫn đến nhiều kết cục khác nhau.

Giới thiệu dự án

Truyện tương tác nhiều nhánh (branching narrative) là thể loại người đọc không chỉ xem mà còn quyết định chuyện gì xảy ra tiếp theo. Mỗi lựa chọn mở ra một nhánh cốt truyện — có thể dẫn đến kết thúc vui, buồn hoặc bất ngờ.

Logo Scratch
Dự án lớp 8 kết hợp kể chuyện sáng tạo với broadcast, biến và điều kiện
Mở đầu Lựa chọn A / B Cảnh 2a hoặc 2b Lựa chọn tiếp Kết cục 1 / 2 / 3…
Phác thảo Vẽ sơ đồ câu chuyện trước khi code
Broadcast Chuyển cảnh bằng thông báo giữa các sprite
Nút lựa chọn Sprite clickable thay cho người xem bấm chọn
Biến trạng thái Theo dõi màn chuyện và điểm đạo đức
💡 Ghi nhớ

Thời gian ước tính: 3–5 giờ. Bắt đầu với 2 lựa chọn × 2 cấp (tối đa 4 kết cục), sau đó mở rộng thêm nhánh khi đã chạy ổn.

Bước 1: Lên kế hoạch câu chuyện

Trước khi mở Scratch

Đừng code ngay — hãy phác thảo trên giấy:

  1. Chủ đề: phiêu lưu, bí ẩn, đời thường, khoa học viễn tưởng…
  2. Nhân vật chính: 1–2 sprite có nhiều trang phục (biểu cảm).
  3. Các cảnh (scene): mỗi cảnh = một phông nền + đoạn thoại + 2 (hoặc 3) lựa chọn.
  4. Sơ đồ nhánh: vẽ mũi tên từ mỗi lựa chọn đến cảnh tiếp theo và đến kết cục.
  5. Đặt tên broadcast: thống nhất tên thông báo — ví dụ chon_rung, chon_lang, ket_thuc_tot.
📌 Ví dụ cốt lõi

"Bạn thức dậy trong căn phòng lạ. Cửa sổ hé mở — bạn chọn nhảy ra cửa sổ hay mở cửa chính?"

  • Cửa sổ → rơi vào vườn → gặp người lạ → kết A hoặc B
  • Cửa chính → hành lang tối → tìm chìa khóa → kết C hoặc D

Bước 2: Thiết kế phông nền và nhân vật

Nghệ thuật & sprite
Nhóm khối Giao diện
Khối chuyển phông nền, nói, hiện/ẩn nằm trong nhóm Giao diện
💡 Ghi nhớ

Ban đầu ẩn tất cả nút lựa chọn. Chỉ hiện đúng cặp nút của cảnh hiện tại — tránh người xem bấm nhầm lựa chọn cảnh khác.

Bước 3: Dùng broadcast chuyển cảnh

Thông báo giữa các phần

Broadcast (phát thông báo) gửi một "tín hiệu" tới toàn bộ sprite và sân khấu. Khi người chơi bấm nút, nút đó phát thông báo; script khi nhận trên Stage hoặc nhân vật sẽ chạy — đổi phông nền, ẩn nút cũ, hiện nút mới.

Nhóm khối Sự kiện có broadcast
Khối "phát thông báo" và "khi nhận được" nằm trong nhóm Sự kiện

Trên sprite nút "Đi rừng"

khi nhấn vào nhân vật này
  phát thông báo [chon_rung v]
  ẩn

Trên Stage (sân khấu)

khi nhận được [chon_rung v]
  chuyển sang phông nền [Cảnh_Rung v]
  phát thông báo [hien_lua_chon_rung v]

Tách đổi phông nềnhiện nút mới bằng hai broadcast liên tiếp giúp script gọn và dễ sửa từng phần.

Bước 4: Biến theo dõi tiến trình

Trạng thái câu chuyện

Biến giúp Scratch "nhớ" người chơi đang ở đâu và đã chọn gì — đặc biệt hữu ích khi có nhiều kết cục phụ thuộc tổng điểm lựa chọn.

Nhóm khối Biến
Tạo biến màn, điểm_tin_cậy hoặc số_lựa_chọn cho toàn sân khấu
khi nhấn cờ xanh
  đặt [màn v] thành [1]
  đặt [điểm_tin_cậy v] thành [0]

khi nhận được [chon_giup_nguoi v]
  thay đổi [điểm_tin_cậy v] thêm [10]
  thay đổi [màn v] thêm [1]
📌 Kết cục theo điểm

Cuối truyện, kiểm tra:

  • điểm_tin_cậy ≥ 20 → phát ket_tot — nhân vật được cứu.
  • điểm_tin_cậy < 20 → phát ket_buon — nhân vật đi lạc.

Bước 5: Quản lý nút lựa chọn

Hiện / ẩn thông minh

Mỗi nhóm nút gắn với một cảnh. Khi vào cảnh mới:

  1. Ẩn tất cả nút (broadcast an_het_nut → mỗi nút khi nhận đượcẩn).
  2. Hiện chỉ nút của cảnh đó (broadcast hien_nut_canh_2 → nút A, B hiện).
khi nhận được [bat_dau v]
  chuyển sang phông nền [Cảnh_1 v]
  phát thông báo [an_het_nut v]
  đợi [0.3] giây
  phát thông báo [hien_nut_canh_1 v]

khi nhận được [hien_nut_canh_1 v] // trên sprite Nút A
  hiện
⚠️ Quan trọng

Tên thông báo phải khớp chính xác giữa khối phátkhi nhận được — kể cả dấu cách và chữ hoa/thường.

Bước 6: Thoại và âm thanh

Kể chuyện sinh động

Gắn đoạn thoại vào broadcast của từng cảnh — trên sprite nhân vật:

khi nhận được [chon_rung v]
  nói [Bạn bước vào rừng tối...] trong [3] giây
  chuyển sang trang phục [lo_lang v]
  phát tiếng [gió v]

Dùng đợi … giây hoặc đợi đến khi khối nói xong trước khi hiện nút — người xem kịp đọc hết thoại trước khi chọn.

📌 Thay thế nút bằng hỏi đáp

Dùng hỏi … và đợi + trả lời cho câu hỏi mở: "Bạn muốn đi đâu?" So sánh trả lời với "rừng" hoặc "làng" bằng khối chứa — phù hợp truyện ít nhánh, nhập liệu tự do.

Bước 7: Nhiều kết cục

Điểm cao trào

Mỗi kết cục là một cảnh riêng: phông nền khác, thoại kết, không còn nút lựa chọn (hoặc chỉ nút "Chơi lại").

khi nhận được [ket_tot v]
  chuyển sang phông nền [Hoang_hon v]
  phát thông báo [an_het_nut v]
  nói [Bạn đã tìm được lối về!] trong [4] giây
  phát tiếng [chiến_thắng v]

Nút "Chơi lại" khi nhấn: phát thông báo [bat_dau] — reset biến và quay về cảnh 1.

Mở rộng cho lớp 8

📌 Chủ đề gợi ý
  • Điều tra vụ án nhỏ trong trường — 3 nghi phạm, 4 kết.
  • Hành trình xuyên thời gian — mỗi thời đại một phông nền.
  • Truyện giáo dục môi trường — lựa chọn ảnh hưởng thiên nhiên.

Kiểm tra và hoàn thiện

  1. Cờ xanh: cảnh mở đầu đúng, đúng nút hiện.
  2. Bấm từng lựa chọn — phông nền và thoại đổi đúng nhánh.
  3. Không còn nút cảnh cũ sau khi chuyển cảnh.
  4. Mọi nhánh đều dẫn tới một kết cục — không có "đường cụt".
  5. Chơi lại từ đầu — biến reset về giá trị ban đầu.
  6. Nhờ bạn chơi thử — cốt truyện có dễ hiểu không?
💡 Ghi nhớ

Truyện nhiều nhánh dạy bạn thiết kế hệ thống: sơ đồ, trạng thái, sự kiện — giống kiến trúc phần mềm thu nhỏ. Đây là nền tảng tốt cho chatbot, game RPG và ứng dụng web tương tác sau này.